package com.yc.config;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.runtime.RuntimeConstants;
import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;

import java.text.DateFormat;
import java.text.SimpleDateFormat;

/**
 * @author zwei
 * @create 2024-08-11 15:11
 */
// 将当前 class 定义为配置类，Spring 容器会根据这个类来创建和配置 bean
@Configuration
// 配置 Velocity 视图解析器来解析 Velocity 模板文件
public class VelocityConfig {
    // 创建一个 VelocityEngine 的 bean
    @Bean
    public VelocityEngine velocityEngine() {
        // 实例化一个 VelocityEngine 对象
        VelocityEngine velocityEngine = new VelocityEngine();
        // 设置Velocity引擎属性，指定资源加载器是类路径加载器
        velocityEngine.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
        // 设置加载器类
        velocityEngine.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
        // 初始化 VelocityEngine
        velocityEngine.init();
        return velocityEngine;
    }
    // 创建一个 VelocityContext 的 bean，用于存储模板所需的数据
    @Bean
    @Scope("prototype")     //原型作用域
    public VelocityContext velocityContext(){
        return new VelocityContext();
    }
    // 创建一个名为 depositTemplate 的 bean，用于加载和解析特定的 Velocity 模板
    @Bean
    public Template loginTemplate(@Autowired VelocityEngine velocityEngine){
        return velocityEngine.getTemplate("vms/login.vm","utf-8");
    }
    @Bean
    public Template payTemplate(@Autowired VelocityEngine velocityEngine){
        return velocityEngine.getTemplate("vms/pay.vm","utf-8");
    }

    // 创建一个名为 fullDf 的 dateFormat bean，使用指定的格式化样式
    @Bean
    public DateFormat fullDf(){
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    }
    @Bean
    public DateFormat partDf(){
        return new SimpleDateFormat("北京时间:yyyy-MM-dd HH:mm:ss");
    }
}
